/**
 * Copyright &copy; 2012-2016 <a href="https://github.com/thinkgem/jeesite">JeeSite</a> All rights reserved.
 */
package com.thinkgem.jeesite.modules.gen.entity;

import com.baomidou.mybatisplus.annotation.TableField;
import com.google.common.collect.Lists;
import com.thinkgem.jeesite.kpoint.core.base.KpointBaseEntity;
import lombok.Data;

import java.util.List;

/**
 * 代码生成-表信息Entity
 *
 * @author kongxiangsheng
 * @version 2018-08-16
 */
@Data
public class GenTableColumn extends KpointBaseEntity {
    public static final String COL_GEN_TABLE_ID = "`gen_table_id`";
    public static final String COL_NAME = "`name`";
    public static final String COL_COMMENTS = "`comments`";
    public static final String COL_DB_TYPE = "`db_type`";
    public static final String COL_DB_LENGTH = "`db_length`";
    public static final String COL_JAVA_TYPE = "`java_type`";
    public static final String COL_JAVA_NAME = "`java_name`";
    public static final String COL_IS_PK = "`is_pk`";
    public static final String COL_IS_NULL = "`is_null`";
    public static final String COL_IS_INSERT = "`is_insert`";
    public static final String COL_IS_EDIT = "`is_edit`";
    public static final String COL_IS_VIEW = "`is_view`";
    public static final String COL_IS_LIST = "`is_list`";
    public static final String COL_IS_QUERY = "`is_query`";
    public static final String COL_IS_CHECK_UNIQUE = "`is_check_unique`";
    public static final String COL_QUERY_TYPE = "`query_type`";
    public static final String COL_SHOW_TYPE = "`show_type`";
    public static final String COL_DICT_TYPE = "`dict_type`";
    public static final String COL_SETTINGS = "`settings`";
    public static final String COL_SORT = "`sort`";

    private static final long serialVersionUID = 1L;
    /**
     * 归属表编号
     */
    private String genTableId;
    /**
     * 名称
     */
    private String name;
    /**
     * 名称-小写
     */
    @TableField(exist = false)
    private String nameLower;
    /**
     * 名称-大写
     */
    @TableField(exist = false)
    private String nameUpper;
    /**
     * 描述
     */
    private String comments;
    /**
     * 列的数据类型的字节长度
     */
    private String dbType;
    /**
     * 字段长度
     */
    private String dbLength;
    /**
     * Jdbc类型
     */
    private String jdbcType;
    /**
     * Java类型
     */
    private String javaType;
    /**
     * Java字段名
     */
    private String javaName;
    /**
     * Java字段名-首字母大写&驼峰命名
     */
    @TableField(exist = false)
    private String javaNameCapital;
    /**
     * Java字段名-首字母小写&驼峰命名
     */
    @TableField(exist = false)
    private String javaNameUnCapital;
    /**
     * 是否主键
     */
    private String isPk;
    /**
     * 是否可为空
     */
    private String isNull;
    /**
     * 是否编辑字段
     */
    private String isEdit;
    /**
     * 是否编辑字段
     */
    private String isView;
    /**
     * 是否列表字段
     */
    private String isList;
    /**
     * 是否查询字段
     */
    private String isQuery;
    /**
     * 是否校验唯一性
     */
    private String isCheckUnique;
    /**
     * 查询方式（等于、不等于、大于、小于、范围、左LIKE、右LIKE、左右LIKE）
     */
    private String queryType;
    /**
     * 字段生成方案（文本框、文本域、下拉框、复选框、单选框、字典选择、人员选择、部门选择、区域选择）
     */
    private String showType;
    /**
     * 字典类型
     */
    private String dictType;
    /**
     * 其它设置（扩展字段JSON）
     */
    private String settings;
    /**
     * 排序（升序）
     */
    private String sort;

    /**
     * 是否是基础字段
     */
    @TableField(exist = false)
    private String isBaseColumn;

    /**
     * 是否不是基础字段
     */
    @TableField(exist = false)
    private String isNotBaseColumn;

    /**
     * 是否是树的基础字段
     */
    @TableField(exist = false)
    private String isBaseTreeColumn;

    /**
     * 是否不是树的基础字段
     */
    @TableField(exist = false)
    private String isNotBaseTreeColumn;
    /**
     * 注解
     */
    @TableField(exist = false)
    private List<String> annotationList = Lists.newArrayList();

    /**
     * 字段名&备注
     */
    @TableField(exist = false)
    private String nameAndComments;
}